#ifndef OBJECT_INSPECTOR_DIRECTOR
#define OBJECT_INSPECTOR_DIRECTOR

#include <sdk_global.h>
#include <QtGui/QStandardItemModel>
#include <QObject>
#include <QModelIndex>
#include <QStandardItem>
#include <ObjectInspectorItem.h>
#include <QAction>
#include <QList>
//每个插件都可以继承这个类，在model类中会调用相关的函数
class QDESIGNER_SDK_EXPORT ObjectInspectorDirector : public QObject
{
    Q_OBJECT
public:
    ObjectInspectorDirector(QObject *parent = 0);
    virtual ~ObjectInspectorDirector();
	virtual void clear();
    virtual void rebuild(QStandardItem* model_root_item);
    virtual void currentItemChanged ( ObjectInspectorItem* item_ptr );//当前选择的项目改变的时候会调用这里
    virtual void selectionItemChanged ( QList<ObjectInspectorItem*> item_list );

    //virtual void addItemDown(ObjectInspectorItem* parent_item, QString object_type_name);
    virtual bool addItemDown(EObject* parentObj, EObject* newObj);//new

    //virtual void deleteItem( QList<ObjectInspectorItem*> item_list );
    // void deleteItem( ObjectInspectorItem* item_ptr );
    virtual bool deleteItem( EObject* obj);//new

    //virtual void changeItemParent(QList<ObjectInspectorItem*> item_list);
    virtual bool changeItemParent( EObject* parentObj, EObject* childObj);//new

    //virtual void copyItem(QList<ObjectInspectorItem*> item_list);
    //virtual void copyItem(ObjectInspectorItem* item_list);
    virtual bool copyItem(EObject* objPtr);//new

    virtual void expandItem(QList<ObjectInspectorItem*> item_list);
    virtual void expandItem(ObjectInspectorItem* item);

    virtual void contractItem(QList<ObjectInspectorItem*> item_list);
    virtual void contractItem(ObjectInspectorItem* item);

    virtual void refresh();

    virtual QList<QAction*> getActionList();
private:

};

#endif // OBJECT_INSPECTOR_DIRECTOR
